14 Async/wait

Próxima Atividade
  • Sugerir melhoria
Carregando vídeo

Transcrição

Olá meus alunos! Este vídeo foi um pedido de vocês!

TypeScript se baseia no ES2015, todavia, na versão ES2017 foi introduzida a sintaxe async/await. Ela funciona da seguinte maneira. Dentro de uma uma função ou método async, isto é, uma função ou método declarado como async NomeDoMetodoOuFuncao, podemos tratar o retorno de promises de uma maneira muito especial.

Por padrão, capturamos o retorno de uma promise dentro da função then. Mas se dentro de uma função async, usamos a instrução await antes da chamada de um método que retorne uma promise, podemos capturar seu retorno sem a necessidade da chamada de then, como se ela fosse uma função síncrona tradicional.

Vejamos um exemplo:

// o método importDados é um método async!

    @throttle()
    async importaDados() {

        try {

           // usou await antes da chamada de this.service.obterNegociacoes()

            const negociacoesParaImportar = await this._service
                .obterNegociacoes(res => {

                    if(res.ok) {
                        return res;
                    } else {
                        throw new Error(res.statusText);
                    }
                });

            const negociacoesJaImportadas = this._negociacoes.paraArray();

            negociacoesParaImportar
                .filter(negociacao => 
                    !negociacoesJaImportadas.some(jaImportada => 
                        negociacao.ehIgual(jaImportada)))
                .forEach(negociacao => 
                this._negociacoes.adiciona(negociacao));

            this._negociacoesView.update(this._negociacoes);

        } catch(err) {
            this._mensagemView.update(err.message);
        }
    }

Mas se não chamamos mais then, não chamaremos também catch, certo? Então, como conseguiremos tratar possíveis erros? Quando usamos async/wait, por mais que o código seja assíncrono, podemos usar try e catch para lidar com possíveis exceções em nosso código. Por mais que nosso código pareça um código síncrono, ele continua sendo um código assíncrono.

A boa notícia é que mesmo o TypeScript suportando apenas o ES2015 ele introduziu em sua sintaxe o async/await do ES2017 a partir da sua versão 2.3. Isso não quer dizer que somos obrigados a utilizá-la, mas seu uso melhor bastante a legibilidade do nosso código.

Tirar dúvida Próxima Atividade
ícone TypeScript parte 2: Mais técnicas e boas práticas

TypeScript parte 2: Mais técnicas e boas práticas

100%
Aula05 de 05

Mais sobre interfaces

Atividades 14 de 17

  • 01 Chega de múltiplos console.log 13min
  • 02 Polimorfismo 11min
  • 03 Interface de método 06min
  • 04 Interface em ação
  • 05 Evitando importar negociações duplicadas 09min
  • 06 Estendendo interfaces 04min
  • 07 Sabatina
  • 08 Sintaxe inválida
  • 09 Para saber mais: TypeScript e Node.js
  • 10 Union Types e Type Guards
  • 11 Type alias
  • 12 Revisão 02min
  • 13 Mensagens de alto nível 03min
  • 14 Async/wait 11min
  • 15 Consolidando seus conhecimentos
  • 16 Considerações finais 01min
  • 17 Projeto final completo

Aulas

Outros Links

Fórum Trocar Curso
Gravatar de Marcos Katsumi Kay

Marcos Katsumi Kay 34.0k xp

Logo da Alura